记录一次 Arch Linux 图形加速丢失问题排查

昨天还好好的,今天一开机,发现 Arch Linux 桌面环境的图形加速没了。接下来,我想邀请你与我一起,进行排查,假设你是一名自身 Arch Linux 用户,请对我进行相应的指导。

首先,我把系统升级到最新版本,但是问题依旧。

通过以下命令查看系统日志:

journalctl -b -p err

找到与显卡相关的报错如下:

Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* DSI link not ready
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_htotal (expected 1720, found 1722)
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hblank_end (expected 1720, found 1722)
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hsync_start (expected 1660, found 1662)
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_htotal (expected 1720, found 1722)
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hblank_end (expected 1720, found 1722)
Feb 11 15:40:12 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hsync_start (expected 1660, found 1662)

问题似乎与 Intel 图形驱动(i915)有关,特别是与显示接口(DSI)链接问题以及 CRTC(显示定时控制器)配置不匹配相关。

我的电脑是小新 Duet,一台 Intel i5-1235U CPU 的二合一平板电脑。这让我回想起,在初次给这台电脑安装 Arch Linux 时,使用默认 Linux 内核出现了花屏问题,花屏原因也是与 i915、DSI、CRTC 相关,后来更换低版本的 LTS 内核后,问题才解决。

我发现,当初的花屏问题,有人提了一个 issue 描述:Lenovo 82TQ - Internal DSI display unusable - various groups of rows with totally noisy pixels (#10071) · Issues · drm / intel · GitLab

Laptop screen unusable after upgrade to kernel 6.6.x.fc39.x86_64 - Fedora Discussion

[Iris Plus] gdm not starting, gnome-shell crashing in cogl_gl_create_timestamp_query (#9889) · Issues · Mesa / mesa · GitLab

Linux 6.6.15 [LWN.net]

我电脑内安装的内核有:

core/linux 6.7.4.arch1-1 [installed]
core/linux-lts 6.6.16-1 [installed]
extra/linux-zen 6.7.4.zen1-1 [installed]

当前使用的内核是 LTS 内核。我昨天刚升级过系统,如此看来,是 LTS 内核升级后,出现的。

梳理一下:

于是我产生了一个想法,切换回高版本的 Linux 内核试一试。

切换回来,问题还是依旧。再次查看系统错误日志:

Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* DSI link not ready
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_htotal (expected 1720, found 1722)
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hblank_end (expected 1720, found 1722)
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hsync_start (expected 1660, found 1662)
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_htotal (expected 1720, found 1722)
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hblank_end (expected 1720, found 1722)
Feb 11 15:55:39 archlinux kernel: i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hsync_start (expected 1660, found 1662)

开启 i915.enable_guc=3 内核参数。重启后通过 dmesg 看是否开启成功:

[    1.579415] i915 0000:00:02.0: vgaarb: deactivate vga console
[    1.579595] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    1.581126] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    1.587090] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[    1.597483] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.13.1
[    1.597487] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[    1.613849] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[    1.614928] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[    1.614929] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[    1.615371] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
[    1.616051] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    2.479721] i915 0000:00:02.0: [drm] *ERROR* DSI link not ready
[    2.740946] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_htotal (expected 1720, found 1722)
[    2.740970] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hblank_end (expected 1720, found 1722)
[    2.740978] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.pipe_mode.crtc_hsync_start (expected 1660, found 1662)
[    2.740985] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_htotal (expected 1720, found 1722)
[    2.740991] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hblank_end (expected 1720, found 1722)
[    2.740998] i915 0000:00:02.0: [drm] *ERROR* [CRTC:80:pipe A] mismatch in hw.adjusted_mode.crtc_hsync_start (expected 1660, found 1662)
[    2.741014] i915 0000:00:02.0: pipe state doesn't match!
[    2.741047] WARNING: CPU: 2 PID: 151 at drivers/gpu/drm/i915/display/intel_modeset_verify.c:223 intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[    2.741566] Modules linked in: i915(+) i2c_algo_bit drm_buddy video wmi ttm intel_gtt drm_display_helper cec btrfs blake2b_generic libcrc32c crc32c_generic crc32c_intel xor raid6_pq
[    2.741607] RIP: 0010:intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[    2.742045]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.742400]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.742766]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.743074]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.743360]  ? intel_fbc_activate+0x35/0x90 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.743755]  intel_atomic_commit_tail+0x874/0xe20 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.744134]  intel_atomic_commit+0x341/0x390 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.744477]  intel_initial_commit+0x16a/0x200 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.744786]  intel_display_driver_probe+0x26/0x90 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.745088]  i915_driver_probe+0x733/0xbe0 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.745392]  i915_init+0x22/0xc0 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.745615]  ? __pfx_i915_init+0x10/0x10 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    2.748659] [drm] Initialized i915 1.6.0 20230929 for 0000:00:02.0 on minor 1
[    2.750979] fbcon: i915drmfb (fb0) is primary device
[    2.757277] i915 0000:00:02.0: pipe state doesn't match!
[    9.696270] WARNING: CPU: 4 PID: 632 at drivers/gpu/drm/i915/display/intel_modeset_verify.c:223 intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[    9.696920]  intel_skl_int3472_tps68470 igen6_edac tps68470_regulator ideapad_laptop clk_tps68470 i2c_hid_acpi i2c_hid platform_profile int3400_thermal int3403_thermal intel_hid acpi_thermal_rel rfkill soc_button_array sparse_keymap int340x_thermal_zone intel_skl_int3472_discrete acpi_pad psmouse mac_hid pkcs8_key_parser crypto_user loop fuse dm_mod nfnetlink zram ip_tables x_tables serio_raw atkbd libps2 nvme vivaldi_fmap nvme_core xhci_pci sha256_ssse3 spi_intel_pci xhci_pci_renesas nvme_auth spi_intel i8042 serio i915 i2c_algo_bit drm_buddy video wmi ttm intel_gtt drm_display_helper cec btrfs blake2b_generic libcrc32c crc32c_generic crc32c_intel xor raid6_pq
[    9.697010] RIP: 0010:intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[    9.697411]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.697767]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.698136]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.698448]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.698761]  ? intel_fbc_activate+0x35/0x90 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.699083]  intel_atomic_commit_tail+0x874/0xe20 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[    9.699421]  intel_atomic_commit+0x341/0x390 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.132970] i915 0000:00:02.0: [drm] *ERROR* DSI link not ready
[   16.395836] i915 0000:00:02.0: pipe state doesn't match!
[   16.396002] WARNING: CPU: 4 PID: 1470 at drivers/gpu/drm/i915/display/intel_modeset_verify.c:223 intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[   16.397165]  processor_thermal_power_floor intel_ishtp intel_vsec roles processor_thermal_mbox intel_skl_int3472_tps68470 igen6_edac tps68470_regulator ideapad_laptop clk_tps68470 i2c_hid_acpi i2c_hid platform_profile int3400_thermal int3403_thermal intel_hid acpi_thermal_rel rfkill soc_button_array sparse_keymap int340x_thermal_zone intel_skl_int3472_discrete acpi_pad psmouse mac_hid pkcs8_key_parser crypto_user loop fuse dm_mod nfnetlink zram ip_tables x_tables serio_raw atkbd libps2 nvme vivaldi_fmap nvme_core xhci_pci sha256_ssse3 spi_intel_pci xhci_pci_renesas nvme_auth spi_intel i8042 serio i915 i2c_algo_bit drm_buddy video wmi ttm intel_gtt drm_display_helper cec btrfs blake2b_generic libcrc32c crc32c_generic crc32c_intel xor raid6_pq
[   16.397311] RIP: 0010:intel_modeset_verify_crtc+0x4d8/0x560 [i915]
[   16.398022]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.398575]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.399130]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.399597]  ? intel_modeset_verify_crtc+0x4d8/0x560 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.400048]  ? intel_fbc_activate+0x35/0x90 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.400301]  intel_atomic_commit_tail+0x874/0xe20 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]
[   16.400429]  intel_atomic_commit+0x341/0x390 [i915 21bc83a10ce365a4f2ec1e3564d9c9964cdc6824]

问题并没有解决,但从中发现了更加详尽的报错内容。


[DSI to eDP adapter] i915 0000:00:02.0: [drm] *ERROR* DSI link not ready (#9045) · Issues · drm / intel · GitLab:提出了关于使用DSI到eDP适配器在Intel设备上遇到的问题。问题描述中提到,有些手持设备在使用MiPi到eDP适配器时遇到了显示不开启和需要硬件旋转支持的合成器(如gamescope)失败的问题。这个问题特别提到了Aya Neo Air(INTEL版本)的设备,指出这个问题似乎是与Intel硬件相关,而在AMD硬件上没有遇到过类似问题。


网络搜索

Screen rotation not working because no FBCON module - Support / Graphics & Display - Manjaro Linux Forum 中提到:

message [drm] *ERROR* DSI link not ready appears because a bug in i915 introduced some months ago.


linux-drm-tip-git

内核降级

cd /var/cache/pacman/pkg
sudo pacman -U linux-lts-6.1.68-1-x86_64.pkg.tar.zst linux-zen-headers-6.6.4.zen1-1-x86_64.pkg.tar.zst

本文作者:Maeiee

本文链接:记录一次 Arch Linux 图形加速丢失问题排查

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!